The present invention is directed to video communications and in particular to achieving synchronization in error-correction-coded video bitstreams.
Digital video communications transmit large amounts of information, which can be vulnerable to corruption in the communication process. To reduce this vulnerability, it is commonplace to add redundancy to the data. The result is a sequence of code words, each of which consists of a predetermined number of bits of the original, non-redundant video data concatenated with error-correction-code (ECC) bits generated from those data to bear a predetermined relationship to the data bits. If they do not, the receiving node can conclude that an error has occurred. In many cases, the code is so constructed that the receiving node can not only detect errors but also correct them in most cases.
In order to take advantage of these features, the receiving node has to determine where one code word ends and the next one starts. A mechanism for achieving this "synchronization" is for each code word to be preceded by a single synchronization bit so chosen that the synchronization bits preceding successive code words form a predetermined synchronization sequence.
Suppose, for instance, that the length of a code word is 511 bits and each code word is preceded by a synchronization bit so that every 512th bit is a synchronization bit. If the synchronization sequence is relatively long, then if every 512th bit after a given candidate bit forms with it the predetermined synchronization sequence, the receiving node can conclude with a relatively high degree of confidence that the candidate bit is indeed a synchronization bit. For instance, if the synchronization sequence is thirty-two bits long, there is less than one chance in four billion that a bit other than a synchronization bit will form with every five hundred twelfth bit thereafter the predetermined thirty-two-bit synchronization sequence. So the synchronization-bit approach to finding code-word boundaries can be quite reliable.
Unfortunately, it can also be quite time-consuming. Basically, candidate bits must be fetched from, say, thirty-two widely spaced positions in the received data record. The resultant sequence must then be compared with the expected synchronization sequence, and the process must be repeated until a match is found.